import os
import django

os.environ.setdefault("DJANGO_SETTINGS_MODULE", 'IPTVOPlatform.settings')
django.setup()

from oplatform.models import Menu

default_menus = [
    {
        'id': 10000,
        'name': '资源管理',
        'cssIcon': 'fa fa-fw fa-cubes',
        'bold': True,
        'expandable': True,
        'subMenu': [
            {
                'id': 10001,
                'name': '频道管理',
                'link': '/main/oplatform/channel',
                'cssIcon': 'fa fa-fw fa-cubes'
            }
        ]
    },
    {
        'id': 20000,
        'name': 'DVB管理',
        'cssIcon': 'fa fa-fw fa-cogs',
        'expandable': True,
        'bold': True,
        'subMenu': [
            {
                'id': 20001,
                'name': 'DVB管理',
                'link': '/main/oplatform/config',
                'cssIcon': 'fa fa-fw fa-cogs'
            }
        ]
    },
    {
        'id': 30000,
        'name': '通道管理',
        'cssIcon': 'fa fa-fw fa-tasks',
        'bold': True,
        'expandable': True,
        'subMenu': [
            {
                'id': 30001,
                'name': '通道管理',
                'link': '/main/oplatform/config-manager',
                'cssIcon': 'fa fa-fw fa-tasks'
            }
        ]
    },
    {
        'id': 40000,
        'name': '网络管理',
        'cssIcon': 'fa fa-fw fa-sitemap',
        'bold': True,
        'expandable': True,
        'subMenu': [
            {
                'id': 40001,
                'name': '网络配置',
                'link': '/main/oplatform/network',
                'cssIcon': 'fa fa-fw fa-sitemap'
            }
        ]
    },
    {
        'id': 50000,
        'name': '设备管理',
        'expandable': True,
        'cssIcon': 'fa fa-fw fa-microchip',
        'bold': True,
        'subMenu': [
            {
                'id': 50001,
                'name': '设备信息',
                'cssIcon': 'fa fa-fw fa-microchip',
                'link': '/main/oplatform/device'
            },
        ]
    },
    {
        'id': 60000,
        'name': '实用工具',
        'expandable': True,
        'cssIcon': 'fa fa-fw fa-inbox',
        'bold': True,
        'subMenu': [
            {
                'id': 60001,
                'name': '三方工具',
                'cssIcon': 'fa fa-fw fa-inbox',
                'link': '/main/oplatform/tools'
            },
{
                'id': 60002,
                'name': '机器注册',
                'cssIcon': 'fa fa-fw fa-registered',
                'link': '/main/oplatform/registe'
            },
        ]
    },
]


def clean_menus():
    Menu.objects.all().delete()


def create_menus(menus=default_menus, super_menu=None):
    """
    创建初始菜单
    :param menus:
    :param super_menu:
    :return:
    """
    for menu in menus:
        m = Menu.objects.get_or_create(
            name=menu.get('name'),
            id=menu.get('id'),
            defaults={
                'expandable': menu.get('expandable', False),
                'css_icon': menu.get('cssIcon', ''),
                'bold': menu.get('bold', False),
                'link': menu.get('link', ''),
                'father': super_menu
            }
        )
        sub_menu = menu.get('subMenu')
        if sub_menu and isinstance(sub_menu, list):
            create_menus(sub_menu, m[0])


def create_relations():
    """
    为了方便使用，将菜单树中每一个节点与所有父节点建立关系。
    :return:
    """
    queryset = Menu.objects.all()

    for q in queryset:
        q.supers.clear()
        supers = []

        def find(_menu):
            if _menu and _menu.father_id:
                if _menu.father not in supers:
                    supers.append(_menu.father)
                find(_menu.father)

        find(q)
        if supers:
            q.supers.add(*supers)


def run():
    clean_menus()
    create_menus()
    create_relations()
    print('menu created')


run()
